package com.android.support.lib.universal.util;

import com.android.support.lib.universal.R;

import android.app.Activity;
import android.graphics.drawable.BitmapDrawable;
import android.util.Log;
import android.view.View;

/**
 * 内存清除
 * 
 * @author 彭治铭
 *
 */
public class Utilrecycle {

	/**
	 * android中对于控件的background,src等资源不会随activity.this.finish()而消亡的
	 * 回收控件的background,src等资源
	 * 
	 * @param v
	 */
	public void Recycle(View v) {
		try {
			if (v != null && v.getBackground() != null) {
				v.setBackgroundResource(0);
				try {
					BitmapDrawable bd = (BitmapDrawable) v.getBackground();
					bd.setCallback(null);
					bd.getBitmap().recycle();
				} catch (Exception e) {
					// TODO: handle exception
				}
				v = null;
			}
		} catch (Exception e) {
			// TODO: handle exception
			Log.e("控件回收失败", "原因：" + e.getMessage());
		}

	}

	/**
	 * 改变父类Activity的contentview对象的引用，让oncreate的setContentview创建的
	 * 那个view对象失去引用，被GC掉。使用如下： UtilRecycle.setContentView(this);
	 * super.onDestroy();//在该方法之前调用,将super方法放最后，这样GC才会自动回收垃圾
	 * 
	 * @param activity
	 */
	public void setContentView(Activity activity) {
		try {
			activity.setContentView(R.layout.lib_null);
		} catch (Exception e) {
			// TODO: handle exception
			Log.e("佈局清除錯誤", "原因" + e.getMessage());
		}

	}
}
